#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>


#include "equipement.h"


#ifndef _FUSEE
#define _FUSEE

/**
@brief la strure Fusee où on a l'id d'une fusee et de l'equipement, le nom du joueur la dimension, la position, les point de vie de la fusee
**/
typedef struct{
	int idFusee;
	int idEquipement;
	char *nomJoueur;
	int dimX;
	int dimY;
	int posX;
	int posY;
	int pointVie;
}Fusee;
/**
@brief les procedures d'initialisation d'une fusee
**/
void initFusee(Fusee *f);
void parametreFusee(Fusee *f,int idFusee, int idEquipement, const char * nomJoueur, int dimX, int dimY, int posX, int posY, int pointvie);

/**
@brief la procedure libareFusee qui nous permet de liberer le pointeur.
**/
void libereFusee(Fusee *f);

/**
@brief les accesseurs permettant d'accéder aux données de la fusee
**/
int getidFusee(const Fusee *f);
int getidEquipementFusee(const Fusee *f);
char* getnomJoueurFusee(const Fusee *nomJoueur);
int getdimXFusee(const Fusee *f );
int getdimYFusee(const Fusee *f);
int getposXFusee(const Fusee *f);
int getposYFusee(const Fusee *f);
int getpointVieFusee(const Fusee *f);

/**
@brief la mutateurs permettant de modifier les données du jeu
**/
void setidFusee (Fusee *f, int idFusee);
void setidEquipementFusee (Fusee *f, int idEquipement);
void setnomJoueurFusee (Fusee *f, const char *nomJoueur, int taille);
void setdimXFusee (Fusee *f, int dimX);
void setdimYFusee (Fusee *f, int dimY);
void setposXFusee (Fusee *f, int posX);
void setposYFusee (Fusee *f, int posY);
void setpointVieFusee (Fusee *f, int pointVie);

/**
@brief les fonctions de gestion des fusées qui prennent un pointeur sur Fusee
**/
int posXmoyenneFusee (Fusee *f);
void deplacerFuseeGauche (Fusee *f);
void deplacerFuseeDroite (Fusee *f);
void deplacerFuseeHaut (Fusee *f);
void deplacerFuseeBas (Fusee *f);
void resterSurPlace (Fusee *f);


/**
@brief la procedure de gestion des collisions qui prend un pointeur sur fusee et un pointeur sur equipement.
**/
void enleverPointsVie(Fusee *f, Equipement *eq);
void ajouterPointsVieFusee(Fusee *f);


/**
@brief les procedures Test de non-regression des fusées.
**/
void testRegressionFusee();

#endif
